/*
 *
 * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
// Copyright (c) 1995-96 by Cisco Systems, Inc.

package com.sun.jmx.snmp;

// java import
//

import java.util.Vector;

// jmx import
//
import com.sun.jmx.snmp.SnmpOidTable;
import com.sun.jmx.snmp.SnmpOidRecord;
import com.sun.jmx.snmp.SnmpStatusException;

/**
 * Defines the minimal functionality that should be provided by a class containing a set of
 * <CODE>SnmpOidTable</CODE> objects containing metadata definitions for MIB variables. Each
 * <CODE>SnmpOidTable</CODE> should contain information on variables of one MIB. The
 * <CODE>SnmpOidDatabase</CODE> is a "repository" of <CODE>SnmpOidTable</CODE>. It extends the
 * <CODE>SnmpOidTable</CODE> interface in order to provide resolution of the MIB variables. <P>
 * <p><b>This API is a Sun Microsystems internal API  and is subject to change without
 * notice.</b></p>
 *
 * @see com.sun.jmx.snmp.SnmpOidTable
 */

public interface SnmpOidDatabase extends SnmpOidTable {

  /**
   * Adds an <CODE>SnmpOidTable</CODE> object in this <CODE>SnmpOidDatabase</CODE>.
   *
   * @param table The table to add.
   */
  public void add(SnmpOidTable table);

  /**
   * Removes an <CODE>SnmpOidTable</CODE> object from this <CODE>SnmpOidDatabase</CODE>.
   *
   * @param table The table to be removed.
   */
  public void remove(SnmpOidTable table) throws SnmpStatusException;

  /**
   * Removes all the <CODE>SnmpOidTable</CODE> objects from this <CODE>SnmpOidDatabase</CODE>.
   */
  public void removeAll();

  /**
   * Searches for a MIB variable given its logical name and returns an <CODE>SnmpOidRecord</CODE>
   * object containing information on the variable.
   *
   * @param name The name of the MIB variable.
   * @return The <CODE>SnmpOidRecord</CODE> object containing information on the variable.
   */
  public SnmpOidRecord resolveVarName(String name) throws SnmpStatusException;

  /**
   * Searches for a MIB variable given its OID and returns an <CODE>SnmpOidRecord</CODE> object
   * containing information on the variable.
   *
   * @param oid The OID of the MIB variable.
   * @return The <CODE>SnmpOidRecord</CODE> object containing information on the variable.
   */
  public SnmpOidRecord resolveVarOid(String oid) throws SnmpStatusException;

  /**
   * Returns a list that can be used to traverse all the entries of the <CODE>SnmpOidTable</CODE>
   * objects of this <CODE>SnmpOidDatabase</CODE>.
   *
   * @return A vector of <CODE>SnmpOidTable</CODE> objects containing all the elements of this
   * <CODE>SnmpOidDatabase</CODE>.
   */
  public Vector<?> getAllEntries();
  // We can't specify Vector<SnmpOidTable> because the subinterface SnmpOidTable
  // overrides this method to return Vector<SnmpOidRecord>
}
